// 定义防抖函数
type DebounceFunction = (...args: any[]) => void

/**
 * 创建一个防抖函数
 * @param func - 需要防抖处理的函数
 * @param wait - 延迟时间（毫秒）
 * @returns - 防抖处理后的函数
 */
export function debounce(
  func: DebounceFunction,
  wait: number,
): DebounceFunction {
  let timeoutId: any

  return function (...args: any[]): void {
    if (timeoutId !== undefined) {
      clearTimeout(timeoutId)
    }

    timeoutId = setTimeout(() => {
      func(...args)
    }, wait)
  }
}
